package com.nondo.dean.auth.provider;


import com.nondo.dean.auth.common.bean.RoleAuthorityItem;
import com.nondo.dean.auth.common.bean.RoleItem;
import com.nondo.dean.auth.common.bean.RoleMenuItem;
import com.nondo.dean.auth.domain.Role;
import com.nondo.dean.common.web.Page;
import com.nondo.dean.common.web.Query;
import com.nondo.dean.common.web.View;

public interface RoleManager {

    /**
     * 请求注册角色
     *
     * @param roleItem 角色对象
     * @return 返回注册成功或失败提示
     */
    View<String> registerRole(RoleItem roleItem);

    /**
     * 删除角色
     *
     * @param roleId 角色ID
     * @return 返回成功或失败提示
     */
    View<String> deleteRole(Long roleId);

    /**
     * 请求角色权限绑定
     *
     * @param roleAuthorityItem 角色权限绑定对象
     * @return 返回绑定成功或失败提示
     */
    View<String> requestRoleAuthorityBind(RoleAuthorityItem roleAuthorityItem);

    /**
     * 请求角色菜单绑定
     *
     * @param roleMenuItem 角色菜单绑定对象
     * @return 返回绑定成功或失败提示
     */
    View<String> requestRoleMenuBind(RoleMenuItem roleMenuItem);

    /**
     * 分页查询角色
     *
     * @param query 查询对象
     * @return 返回成功或失败提示
     */
    View<Page<Role>> findRolePage(Query<RoleItem> query);

    /**
     * 查询角色
     *
     * @param code 角色code
     * @return 返回成功或失败提示
     */
    View<Long> findRoleByCode(String code);

}
